from django.db import models


# Create your models here.
# 图书管理系统  书 作者 出版社
class Publisher(models.Model):
    """
    出版社
    """
    id = models.AutoField(primary_key=True, verbose_name='主键')
    name = models.CharField('出版社名称', max_length=64, unique=True, null=False)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '出版社'
        verbose_name_plural = verbose_name


# 一本书只能有一个出版社
# 一本书能有多个作者
# 一个作者能写多本书


# 出版社和书:一对多  ->外键
# 书和作者 多对多  -->用第三张表


# 出版社  id name
# 书  id title
# 作者 id name
class Book(models.Model):
    # 标题
    title = models.CharField(max_length=68, verbose_name='书名')
    # 出版社
    publisher = models.ForeignKey(verbose_name='出版社', to='Publisher', to_field='id',
                                  on_delete=models.CASCADE, null=True)
    # 作者
    author = models.ForeignKey(verbose_name='作者', to='Author', to_field='id',
                               on_delete=models.CASCADE, null=True)
    # 定价
    start_price = models.CharField(verbose_name='定价', max_length=5, null=True)
    # 当前价格
    now_price = models.CharField(verbose_name='当前价格', max_length=5, null=True)
    # 书籍图片地址
    book_img = models.CharField(verbose_name='封面', max_length=128, null=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = '图书'
        verbose_name_plural = verbose_name


# 作者
class Author(models.Model):
    name = models.CharField(max_length=128, verbose_name='姓名')

    # 添加一个字段,使其能够简单的查询这个作者的所有书籍
    # books = models.ManyToManyField(to='Book')
    def get_books(self):
        """
        获取当前作者的所有书籍
        :return:
        """
        books = Book.objects.filter(author=self).order_by('-id')
        return books

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '作者'
        verbose_name_plural = verbose_name
